#ifndef CHESSMANMOVETABLE_H
#define CHESSMANMOVETABLE_H

#include <vector>
#include "ChessType.h"

class ChessManMoveTable
{
public:
	~ChessManMoveTable();
	
	static ChessManMoveTable* Instance();

	void InitChessManMoveTable();

	std::vector<ChessManMoveDir>* GetChessManMoveTab(int chessMan);

protected:
	ChessManMoveTable();
	ChessManMoveTable(const ChessManMoveTable&);
	ChessManMoveTable& operator=(const ChessManMoveTable&);

private:
	inline void InitPawnMoveTable();
	inline void InitRookMoveTable();
	inline void InitKnightMoveTable();
	inline void InitBishopMoveTable();
	inline void InitQueenMoveTable();
	inline void InitKingMoveTable();

private:
	std::vector<ChessManMoveDir>		m_lstChessManMoveTab[MaxNumChessMan];
};

#endif
